// 显示复制链接对话框（备用方案）
function showCopyLinkDialog(downloadUrl) {
  uni.showModal({
    title: '无法自动打开浏览器',
    content: `下载链接：${downloadUrl}\n\n请手动复制链接到浏览器下载`,
    confirmText: '复制链接',
    cancelText: '关闭',
    success: (res) => {
      if (res.confirm) {
        // 复制链接到剪贴板
        uni.setClipboardData({
          data: downloadUrl,
          success: () => {
            uni.showToast({
              title: '链接已复制，请在浏览器粘贴',
              icon: 'success',
              duration: 3000
            });
          },
          fail: () => {
            uni.showToast({
              title: '复制失败，请手动复制',
              icon: 'none'
            });
          }
        });
      }
    }
  });
}

// 版本号比较函数
function compareVersion(v1, v2) {
  v1 = v1.split('.')
  v2 = v2.split('.')
  const len = Math.max(v1.length, v2.length)
  
  while (v1.length < len) {
    v1.push('0')
  }
  while (v2.length < len) {
    v2.push('0')
  }
  
  for (let i = 0; i < len; i++) {
    const num1 = parseInt(v1[i])
    const num2 = parseInt(v2[i])
    
    if (num1 > num2) {
      return 1
    } else if (num1 < num2) {
      return -1
    }
  }
  
  return 0
}

// 检查版本更新
function checkAppUpdate() {
  // 获取当前App版本号
  let currentVersion = '1.0.0'; // 默认版本号
  
  // #ifdef APP-PLUS
  // App环境通过plus获取版本号
  if (typeof plus !== 'undefined') {
    try {
      currentVersion = plus.runtime.version;
      console.log('当前App版本：', currentVersion);
    } catch (e) {
      console.error('获取版本号失败：', e);
      // 尝试从系统信息获取
      try {
        const sysInfo = uni.getSystemInfoSync();
        currentVersion = sysInfo.appVersion || sysInfo.version || '1.0.0';
      } catch (err) {
        console.error('从系统信息获取版本号也失败：', err);
      }
    }
  }
  // #endif
  
  // #ifdef H5
  // H5环境可以从配置或打包时注入的环境变量获取
  currentVersion = process.env.VUE_APP_VERSION || '1.0.0';
  // #endif
  
  console.log('准备检查更新，当前版本：', currentVersion);
  
  // 从服务器获取最新版本信息
  uni.request({
    url: 'https://gnber.kinfy.com/api/noLogin/checkAppUpdate',
    method: 'POST',
    success: (res) => {
      if (res.data.data && res.data.data.latestVersion) {
        const latestVersion = res.data.data.latestVersion;
        const downloadUrl = res.data.data.downloadUrl;
		const updateContent = res.data.data.updateContent || '优化用户体验，修复已知问题';
        // 比较版本号
        if (compareVersion(currentVersion, latestVersion) < 0) {
          // 版本过低，提示更新
		  
		  let formattedContent = updateContent
		              .replace(/\n/g, '<br/>')
		              .replace(/-/g, '• '); // 将减号替换为圆点符号
          uni.showModal({
            title: '发现新版本',
            content: `当前版本：v${currentVersion}\n\n更新内容：\n${updateContent}`,
            confirmText: '立即更新',
			showCancel: true,
			cancelText: '稍后再说',
            success: (modalRes) => {
              if (modalRes.confirm) {
                // 跳转到下载地址
                console.log('用户点击立即更新，准备打开下载链接：', downloadUrl);
                
                // #ifdef APP-PLUS
                // 确保plus对象已经加载
                if (typeof plus !== 'undefined') {
                  try {
                    console.log('检测到plus对象，开始打开浏览器...');
                    console.log('操作系统：', plus.os.name);
                    
                    // 使用plus.runtime.openURL打开浏览器
                    plus.runtime.openURL(downloadUrl, function(res) {
                      console.log('成功打开浏览器下载页面');
                      uni.showToast({
                        title: '正在跳转浏览器...',
                        icon: 'success'
                      });
                    }, function(error) {
                      console.log('openURL失败，错误信息：', error);
                      // 失败后尝试使用plus.runtime.openWeb
                      try {
                        console.log('尝试使用openWeb方法...');
                        plus.runtime.openWeb(downloadUrl);
                      } catch (err) {
                        console.error('openWeb也失败：', err);
                        // 最后的备用方案：复制链接到剪贴板
                        showCopyLinkDialog(downloadUrl);
                      }
                    });
                  } catch (e) {
                    console.error('打开浏览器异常：', e);
                    // 备用方案：显示复制链接对话框
                    showCopyLinkDialog(downloadUrl);
                  }
                } else {
                  console.error('plus对象未定义，可能还没准备好');
                  // 备用方案：显示链接让用户复制
                  showCopyLinkDialog(downloadUrl);
                }
                // #endif
                
                // #ifdef H5
                // H5环境直接打开链接
                try {
                  window.open(downloadUrl, '_blank');
                  console.log('H5环境：已在新窗口打开下载链接');
                } catch (e) {
                  console.error('H5打开链接失败：', e);
                  showCopyLinkDialog(downloadUrl);
                }
                // #endif
              }
            }
          });
        }
      }
    },
    fail: (err) => {
      console.log('版本检测失败', err);
    }
  });
}

// 强制测试更新功能（用于调试）
function testUpdateDialog() {
  console.log('=== 强制显示测试更新弹窗 ===');
  
  const testDownloadUrl = 'https://www.baidu.com'; // 测试链接
  let currentVersion = '1.0.0';
  
  // #ifdef APP-PLUS
  if (typeof plus !== 'undefined') {
    currentVersion = plus.runtime.version || '1.0.0';
  }
  // #endif
  
  // 模拟有新版本，强制显示更新弹窗
  uni.showModal({
    title: '发现新版本（测试）',
    content: `当前版本：v${currentVersion}\n\n这是一个测试弹窗\n点击"立即更新"将打开百度网站\n用于测试浏览器跳转功能`,
    confirmText: '立即更新',
    showCancel: true,
    cancelText: '取消',
    success: (modalRes) => {
      if (modalRes.confirm) {
        console.log('用户点击立即更新（测试），准备打开测试链接：', testDownloadUrl);
        
        // #ifdef APP-PLUS
        if (typeof plus !== 'undefined') {
          try {
            console.log('检测到plus对象');
            console.log('操作系统：', plus.os.name);
            console.log('App版本：', plus.runtime.version);
            console.log('尝试打开链接：', testDownloadUrl);
            
            plus.runtime.openURL(testDownloadUrl, function(res) {
              console.log('✅✅✅ 成功打开浏览器！测试通过！');
              uni.showToast({
                title: '✅ 测试成功！',
                icon: 'success',
                duration: 2000
              });
            }, function(error) {
              console.log('❌❌❌ 打开浏览器失败，错误：', error);
              uni.showToast({
                title: '❌ 打开失败：' + JSON.stringify(error),
                icon: 'none',
                duration: 3000
              });
              
              // 尝试备用方案
              try {
                console.log('尝试使用openWeb方法...');
                plus.runtime.openWeb(testDownloadUrl);
              } catch (err) {
                console.error('openWeb也失败：', err);
                showCopyLinkDialog(testDownloadUrl);
              }
            });
          } catch (e) {
            console.error('❌❌❌ 异常：', e);
            showCopyLinkDialog(testDownloadUrl);
          }
        } else {
          console.error('❌ plus对象未定义');
          uni.showToast({
            title: 'plus对象未定义',
            icon: 'none'
          });
        }
        // #endif
        
        // #ifdef H5
        window.open(testDownloadUrl, '_blank');
        // #endif
      } else {
        console.log('用户取消测试');
      }
    }
  });
}

// 在App启动时调用检查
// 可以在App.vue的onLaunch中调用
export default {
  checkAppUpdate,
  testUpdateDialog
}
